Test `@mel.as` in `@mel.obj` and `%mel.obj`

  $ . ./setup.sh
  $ cat > x.ml <<'EOF'
  > external func :
  >   foo:(string [@mel.as "bar"]) ->
  >   ?polyParam1:([ `Str of string | `Int of int ][@mel.as "poly-param1"]) ->
  >   ?polyParam2:([ `Str of string | `Int of int ][@mel.unwrap][@mel.as "poly-param2"]) ->
  >   unit -> _ = ""
  > [@@mel.obj]
  > let x = func ~foo:"x" ~polyParam1:(`Str "hello") ~polyParam2:(`Int 5) ()
  > (* wildcard [@mel.as] constants still work *)
  > external ff : lo:(_ [@mel.as 3]) -> hi:int -> _ Js.t = "" [@@mel.obj]
  > let y: < > Js.t = ff ~hi:42
  > EOF
  $ melc -ppx melppx x.ml
  // Generated by Melange
  'use strict';
  
  
  const x = {
    bar: "x",
    "poly-param1": {
      NAME: "Str",
      VAL: "hello"
    },
    "poly-param2": 5
  };
  
  const y = {
    lo: 3,
    hi: 42
  };
  
  module.exports = {
    x,
    y,
  }
  /* No side effect */


  $ cat > x.ml <<'EOF'
  > let x =
  >   [%mel.obj
  >     {
  >       a = ("text/plain" [@mel.as "Content-Type"]);
  >       b = ("50" [@mel.as "Content-Length"]);
  >     }]
  > EOF
  $ melc -ppx melppx x.ml
  // Generated by Melange
  'use strict';
  
  
  const x = {
    "Content-Type": "text/plain",
    "Content-Length": "50"
  };
  
  module.exports = {
    x,
  }
  /* No side effect */
